開発/本番の切替えをConditionsで実装! Deep Securityマネージャ編 | アドカレ2013 : CFn #4
ども、大瀧です。『アドベントカレンダー2013:AWS CloudFormationビッグバンテンプレート』4本目です。
昨日3日目は、ブログ職人しんやさんのPukiWiki編でした。
Trend Micro Deep Security Managerのテンプレート、作りました。
Trend Micro Deep Securityとは、トレンドマイクロ社が開発するAWS環境をサポートするホスト型のセキュリティ製品です。Deep Securityの機能や手動での構築方法をブログエントリーにまとめていますので、こちらもご覧ください(まだシリーズの執筆途中ですが)。
ホスト型とありますが、実際には各サーバーに配置するエージェントを管理するためのマネージャサーバーが必要です。今回のCloudFormationテンプレートは、このマネージャサーバーをワンタッチで構築するテンプレートです。
制約と特徴
CentOSのAMIを前提にしていますが、RHELでも恐らく動くと思います。ただし、標準AMIの場合はiptablesとSELinuxを無効にしたカスタマイズAMIを準備して、パラメータに指定してください。カスタマイズAMIを準備するのが面倒であれば、Packerテンプレートを用意しましたので、PackerでAMIを自動作成してもよいでしょう。Packerの操作方法は以下のブログエントリーを参考にしてください。
- deepsecurity-cloudformation/centos_cloud-init.json - GitHub
- PackerでAmazon LinuxのAMI(Amazon Machine Image)を作成する | Developers.IO
以下に起動時のパラメータを示します。
EnvType | Deep Securityマネージャの環境を指定します。prodもしくはtestのどちらかを指定します。 |
DSMInstanceImageId | Deep Securityマネージャのインスタンスの元になるAMI IDを指定します 例: ami-XXXXXXXX |
AdminUsername | Deep Securityマネージャの管理者ユーザー名 |
AdminPassword | Deep Securityマネージャの管理者パスワード |
VPC | Deep SecurityマネージャインスタンスおよびRDS DBインスタンスを配置するVPCのID 例 : vpc-XXXXXXXX |
VPCCIDR | VPCのネットワークアドレス 例 : x.x.x.x/x |
VPCDefaultSecurityGroup | Deep Securityマネージャインスタンスに適用される、1つ目のセキュリティグループ 例 : sg-XXXXXXXX |
SSHSecurityGroup | Deep Securityマネージャインスタンスに適用される、2つ目のセキュリティグループ 例 : sg-XXXXXXXX |
FrontendSubnet | Deep Securityマネージャインスタンスを配置するVPCサブネットID 例 : subnet-XXXXXXXX |
DBMasterUsername | [prodのみ]RDSのマスターユーザー名 |
DBMasterPassword | [prodのみ]RDSのマスターユーザーのパスワード |
DBSubnetGroup | [prodのみ]RDS DBインスタンスに設定する、DBサブネットグループ名 |
HostedZone | Deep SecurityマネージャインスタンスのPublic IPにひもづくDNSレコード(ds. |
KeyName | Deep Securityマネージャインスタンスに適用される、SSHキーペア名 |
ポイントはEnvTypeのところで、CloudFormationで最近サポートされたConditionsを用いて、本番環境と開発環境が選択できるようになっており、以下が変わるようになっています。
- 開発環境(test)
- データベースは、DeepSecurity組み込みのJava DB(Derby)で、マネージャEC2インスタンス内にインストール
- 本番環境(prod)
- データベースは、RDS for OracleのDBインスタンスを立ち上げ、マネージャからの接続設定データベースへのデータ投入を自動で行います。
CloudFormationのスタックがCompleteになったあと10分程待ってからOutputタブのURL(https://Deep SecurityマネージャのDNS名:4119/)にアクセスしてみてください。独自ドメインの取得を前提にしていますが、EC2のDNS名でアクセスすることもできます。
上記ログイン画面が表示されたら、Parametersに指定した管理者ユーザー名/パスワードを入力します。
開発環境(test)の場合は、Deep Securityマネージャのネットワークマップからローカルのデータベースを使用していることが確認できます。
本番環境(prod)の場合は、ネットワークマップにRDS(Oracle)を使用していることが確認できます。
まとめ
AWS CloudFormationビッグバンテンプレート4日目、いかがだったでしょうか。Conditions周りはGitHubのテンプレートを見ていただくと参考になるのでは、と思います。
明日5日目のテンプレートもご期待ください!!!